//剪枝
public class T3008特殊的三角形 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //前缀和数组(因为是统计一个区间中的个数)
        long[] sum = new long[(int)1e6+1];
        //默认a<b<c
        for(int a=1;a<100;a++) {
            for(int b=a+1;b<1000;b++) {
                for(int c=b+1;c<a+b;c++) {
                    if(is(a,b,c)&&(a*b*c<sum.length)) {
                        sum[a*b*c]++;
                    }
                }
            }
        }
        //统计前n项和
        for(int i=1;i<sum.length;i++) {
            sum[i]+=sum[i-1];
        }

        int t = scan.nextInt();

        while(t-->0) {
            int l = scan.nextInt();
            int r = scan.nextInt();
            long res = sum[r]-sum[l-1];
            System.out.println(res);
        }
    }

    //判断三角形是否合法
    public static boolean is(int a,int b,int c) {
        if((a+b>c)&&(b+c>a)&&(a+c>b)) {
            return true;
        }
        return false;

    }
}

